
// 走方格的方案数
// n*m 大小的方格, 沿着线从左上角出发, 只能 向右和向下 走 , 问走到右下角有多少种走法

import java.util.Scanner;

// 思路: 动态规划
//      最外层(最上和最左) 最左只能是从自己的上边走过来, 同理最上只能是从自己的左边走过来, 所以都只有一种走法
//      但是 除最左和最上之外, 其他的地方都可以是 分别从自己的 左边或者上边走过来的 , 所以只需要相加这两种即可
public class Test07 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int n = sc.nextInt();
            int m = sc.nextInt();
            int[][] dp = new int[n + 1][m + 1];
            for (int i = 0; i <= n; i++) {
                dp[i][0] = 1;
            }
            for (int i = 0; i <= m; i++) {
                dp[0][i] = 1;
            }
            for (int i = 1; i <= n; i++) {
                for (int j = 1; j <= m; j++) {
                    dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
                }
            }
            System.out.println(dp[n][m]);
        }
    }

}
